package personal.zq.practice.common.utils.leetcode.medium;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

/**
 * 进制转换
 * 时间限制：C/C++ 1秒，其他语言2秒
 * <p>
 * 空间限制：C/C++ 32M，其他语言64M
 * <p>
 * 写出一个程序，接受一个十六进制的数，输出该数值的十进制表示。
 * <p>
 * 数据范围：保证结果在
 * <p>
 * 输入描述:
 * 输入一个十六进制的数值字符串。
 * <p>
 * <p>
 * 输出描述:
 * 输出该数值的十进制字符串。不同组的测试用例用\n隔开。
 * <p>
 * <p>
 * 输入例子1:
 * 0xAA
 * <p>
 * 输出例子1:
 * 170
 *
 * @author zhangqing
 * @version 1.0
 * @date 2022/7/29
 */
public class HexadecimalConversion {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String content = br.readLine();
        //将全部的小写转化为大写
        content = content.toUpperCase();
        System.out.println(covert(content));
    }

    /**
     * @param: [content]
     * @return: int
     * @description: 十六进制转十进制
     */
    public static int covert(String content){
        int number=0;
        String [] HighLetter = {"A","B","C","D","E","F"};
        Map<String,Integer> map = new HashMap<>();
        for(int i = 0;i <= 9;i++){
            map.put(i+"",i);
        }
        for(int j= 10;j<HighLetter.length+10;j++){
            map.put(HighLetter[j-10],j);
        }
        String[]str = new String[content.length()];
        for(int i = 0; i < str.length; i++){
            str[i] = content.substring(i,i+1);
        }
        for(int i = 0; i < str.length; i++){
            if (map.get(str[i]) == null) {
                continue;
            }else{
                number += map.get(str[i])*Math.pow(16,str.length-1-i);
            }

        }
        return number;
    }
}
